#ifndef TESTING_H
#define TESTING_H

struct assert_fail
{
	struct assert_fail * next;
	const char * file;
	int line;
	const char * message;
};


void _assert_int_equals(const int val1, int val2, const char * message, const char * file, int line);
void _assert_int_notEquals(const int val1, int val2, const char * message, const char * file, int line);
void _assert_is_true( int val , const char * message, const char * file, int line);
void _assert_is_false( int val , const char * message, const char * file, int line);
void _assert_is_null( void* val , const char * message, const char * file, int line);
void _assert_is_notNull( void* val , const char * message, const char * file, int line);

void testing_dump();
#define assert_int_equals(val1, val2, message) _assert_int_equals(val1, val2, message, __FILE__, __LINE__ )
#define assert_int_notEquals(val1, val2, message) _assert_int_notEquals(val1, val2, message, __FILE__, __LINE__ )
#define assert_is_true(val1, message) _assert_is_true(val1,  message, __FILE__, __LINE__ )
#define assert_is_false(val1, message) _assert_is_false(val1,  message, __FILE__, __LINE__ )
#define assert_is_null(val1, message) _assert_is_null(val1,  message, __FILE__, __LINE__ )
#define assert_is_notNull(val1, message) _assert_is_notNull(val1,  message, __FILE__, __LINE__ )

#endif
